/**
 * Copyright 2009-2010 by The Regents of the University of California
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * you may obtain a copy of the License from
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package edu.ucr.cs.dblab.acestore.base;

import java.nio.ByteBuffer;

/**
 * @author jarod
 *
 */
public class ACEPage {

	private ByteBuffer page;
	private boolean pinned, dirty;
	
	public ACEPage(ByteBuffer page){
		this.page = page;
		this.pinned = false;
		this.dirty = false;
	}
	
	public ACEPage(ByteBuffer page, boolean pinned, boolean dirty){
		this.page = ByteBuffer.wrap(new byte[page.capacity()]);
		System.arraycopy(page.array(), 0, this.page.array(), 0, this.page.capacity());
		this.pinned = pinned;
		this.dirty = dirty;
	}
	
	public void pin(){
		this.pinned = true;
	}
	
	public void unpin(){
		this.pinned = false;
	}
	
	public boolean isPinned(){
		return pinned;
	}
	
	public void setDirty(boolean dirty){
		this.dirty = dirty;
	}
	
	public boolean isDirty(){
		return dirty;
	}
	
	public ByteBuffer getPage(){
		return page;
	}
}
